package com.cskaoyan.javase.oop1._11anonymous;

/**
 * 匿名对象
 * 匿名和佚名: 没有名字,名字缺失
 * 匿名对象: 指的就是在创建对象时,没有给出名字的对象,也就是没有引用
 * 语法:
 *      new 类名(实参);
 *
 * 匿名对象的用途还是很广泛的,当然由于它没有引用,所以必须直接使用,不然就用不了了.
 * 用途有:
 *      1.当你就只想访问一次对象的成员变量,或者调用一次对象的成员方法
 *          就可以直接 new 类名(实参)点 访问/调用即可
 *
 *      2.匿名对象可以作为方法的实参
 *      3.匿名对象作为方法的返回值
 *
 * 优点:
 *      1.最重要的是,简单方便快捷省事,可以少写代码
 *      2.匿名对象会更早成为垃圾,理论上来说,它会更早被GC回收,提升内存的利用效率(实际这一点体现不大)
 *
 * 缺点:
 *      1.它是一次性的,用一次再想使用,是不可能的
 *          所以如果一个对象需要反复使用,使用匿名对象反而造成频繁重复创建新的对象,得不偿失
 *
 * @since 17:27
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        // 匿名对象
        System.out.println(new Student().age);
        new Student().sleep();
        Student stu = new Student(17, "张三");
        System.out.println(getStudentAge(stu));
        System.out.println(getStudentAge(new Student(17, "张三")));

    }
    public static Student getStudent(){
        // Student s = new Student();
        return new Student();
    }

    public static int getStudentAge(Student stu){
        return stu.age;
    }
}

class Student {
    int age;
    String name;

    public Student() {
    }

    public Student(int age, String name) {
        this.age = age;
        this.name = name;
    }


    public void sleep() {
        System.out.println("我麻了,想睡觉了!");
    }
}